home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <exec/exec.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "work:romconf/doorheader.h"
- #include "AEDEFINES:defines.h"
- struct Commands Cmds;
- #define SM sendmessage
- #define sm sendmessage
- #define pm prompt
- #define PM prompt
- #define HK hotkey
- #define hk hotkey
- #define GU getuserstring
- #define sr StripReturn
-
- char MenuLocal[]="DOORS:AEShell/Menu";
- void end();
- void GetLocal();
- void MoveIt();
- void DeleteIt();
- void CopyIt();
- void ListIt();
- void Help();
- void ViewIt();
- void DeterAccess();
- void MoveToNode();
- void RenameIt();
- void MakeIt();
- void DisplayError();
- void StripReturn();
- void ViewDesc();
- char MasterFile[200];
- int Reserved(char *Str,char Filter[]);
- int MakeU=0;
- int MakeH=0;
- int Yes=0;
- void FlagThem();
- void MarkNumbers(char *str);
- long NumList[1000];
- int NumChoose[1000];
- void main(int argc,char *argv[]);
- void main(int argc,char *argv[])
- {
- char CMD[200];
- char CD[200];
- char conf[200];
- char BBS[200];
- FILE *fi;
- int i=0;
- if(argc!=2)
- {
- printf("FlagFile v1.1, written by Joseph Hodge\n");
- printf("Compatible with AmiExpress v1.1u+\n");
- printf("This is a type 'X' door.\n");
- exit(0);
- }
- Register(argv[1][0]-'0');
- while(i<1000)
- {
- NumList[i]=-1L;
- NumChoose[i]=-1;
- i++;
- }
- GU(CMD,BB_LOCAL);
- strcpy(BBS,CMD);
- sprintf(CD,"%s>",CMD);
- strcat(CMD,"Config1");
- fi=fopen(CMD,"rb");
- fread((APTR)&Cmds,sizeof(struct Commands),1,fi);
- fclose(fi);
- SM("FlagFile v1.1 written by Joseph Hodge",1);
- ViewDesc();
- ShutDown();
- end();
- }
- void ViewDesc()
- {
- FILE *fi;
- char Dir[200];
- char FileName[200];
- char Date[10];
- int ndir;
- int Lines;
- long TheDate;
- int FoundDate;
- long NumberFiles=0L;
- int cline=0;
- long Position;
- long Ks;
- long FileNum=0L;
- char Numbers[200];
- char Number[200];
- BOOL GoodDate=FALSE;
- strcpy(Numbers,"");
- GU(Dir,DT_LINELENGTH);
- Lines=atoi(Dir);
- GU(Dir,BB_CONFLOCAL);
- strcat(Dir,"ndirs");
- fi=fopen(Dir,"r");
- if(fi==NULL)
- {
- sm("Files are not supported in this conference.",1);
- return;
- }
- fgets(Dir,80,fi); fclose(fi);
- ndir=atoi(Dir);
- sm("",1);
- sprintf(Dir,"There are %d Dir listings in this conference.",ndir);
- sm(Dir,1);
- sm("Which Dir listing would you like to FlagFrom >:",0);
- pm("",Dir,3);
- if(atoi(Dir)>ndir || atoi(Dir)<1)
- {
- sm("",1);
- sm("That Dir listing does not exist!",1);
- return;
- }
- ndir=atoi(Dir);
- GU(Dir,BB_CONFLOCAL);
- sprintf(FileName,"%sdir%d",Dir,ndir);
- sm("",1);
- pm("Enter From Date mm-dd-yy or [RETURN]>:",Date,8);
- if(strlen(Date)==8)
- {
- TheDate=atol(&Date[6])*365L+atol(Date)*32L+atol(&Date[3]);
- }
- else { TheDate=0; GoodDate=TRUE;}
- fi=fopen(FileName,"r");
- if(fi==NULL)
- {
- sm("Error! Cannot locate that directory listing.",1);
- return;
- }strcpy(MasterFile,FileName);
- cline = Lines-3;
- Position=ftell(fi);
- sm(" num = Passed Test num = Test Not Required",1);
- sm("",1);
-
- while(fgets(Dir,180,fi)!=NULL)
- {
- if(!cline)
- {
- sm("Press [Return],Q)uit or FileNum seperated by commas",1);
- pm(">:",Number,200);
- if(Number[0]=='Q' || Number[0]=='q') { fclose(fi); break;}
-
- if(Number[0]!='\0')
- {
- MarkNumbers(Number);}
- cline=Lines-3;
-
- }
- else if(GoodDate)cline--;
-
- sr(Dir);
-
- if(Dir[25]=='-' && Dir[28]=='-' && Dir[27]!='-')
- {
- FileNum +=1L;
- NumList[FileNum]=Position;
- Ks=atol(&Dir[14])/1000;
- if(Dir[13]=='P')
- sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
- else
- sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
-
- if(TheDate<=atol(&Dir[29])*365L+atol(&Dir[23])*32L+atol(&Dir[26]))
- GoodDate=TRUE;
- if(GoodDate)
- sm(FileName,1);
- }
- else if(GoodDate)sm(Dir,1);
- Position=ftell(fi);
- }
- if(cline)
- {
- sm("Press [Return],or FileNum seperated by commas",1);
- pm(">:",Number,200);
- if(Number[0]!='\0')
- {
- MarkNumbers(Number);}
- cline=Lines-3;
-
- }
-
- fclose(fi);
- if(Yes)
- {
- sm("Flagging Files, Please standby",1);
- FlagThem();
- }
- }
- void FlagThem()
- {
- register int i;
- FILE *fi;
- char image[200];
- char temp[200];
- long Position;
- fi=fopen(MasterFile,"rb");
- i=1; while(i<1000)
- {
- if(NumChoose[i]==1)
- {
-
- fseek(fi,NumList[i],SEEK_SET);
- fgets(image,13,fi);
- sr(image);
- sprintf(temp,"flagged file [%3d] %s",i,image);
- sm(temp,1);
- FlagFile(image);
- }
- i++;
- }
- fclose(fi);
- }
- void MarkNumbers(char *str)
- {
- char Number[200];
- register int i;
- register int j;
- register int k;
- long num;
- strcpy(Number,str);
- i=0;
- k=strlen(Number);
- j=1;
- while(i<k)
- {
- if(j) { num=atol(&Number[i]);
- if(num>0L && num<1000L)
- {
-
- if(NumList[num]>-1L)
- {
- NumChoose[num]=1; Yes=1;
- }
- }
- }
- if(Number[i]==',') j=1; else j=0;
- i++;
- }
- }
-
- void DeterAccess()
- {
- char NAME[200];
- char CMD[200];
- char FileName[200];
- char Password[200];
- FILE *fi;
- register int i=0;
- getuserstring(NAME,DT_NAME);
- strupr(NAME);
- strcpy(CMD,"DOORS:AEShell/CoSysops");
- strcpy(FileName,CMD);
- sm("Enter Password >:",0);
- strcpy(Password,"");
- i=0;
- do
- {
- hk("",CMD); strupr(CMD);
- if(CMD[0]!=13 && CMD[0]!='\0'){ strcat(Password,CMD);sm("X",0);}
- i++;
- }while(CMD[0]!=13 && CMD[0]!='\0' && i<20);
- sm("",1);
- fi=fopen(FileName,"r");
- if(fi==NULL)
- {
- SM("You are not a CoSysop for this Bulletin Board.",1);
- ShutDown();
- end();
- }
- strcat(NAME,"-");
- strcat(NAME,Password);
- while(fgets(CMD,80,fi)!=NULL)
- {
- StripReturn(CMD);
- strupr(CMD);
-
- if(!strcmp(NAME,CMD))
- {
- SM("Access Authenticated.",1);
- fclose(fi);
- return;
- }
- }
- fclose(fi);
- SM("Access Denied, Please consult the Sysop regarding Access.",1);
- ShutDown();
- end();
- }
-
- void StripReturn(char *str)
- {
- register int i;
- i=strlen(str);
- while(i>0)
- {
- if(*(str+i)<32) *(str+i)='\0'; else return;
- i--;
- }
- }
- void end()
- {
- exit(0);
- }